<script>
	// 显式导入登录页面以确保被包含在打包中
	// #ifdef MP-WEIXIN
	import loginPage from './pages/login/login.vue';
	// #endif
		export default {
		onLaunch: function() {
			console.log('App Launch')
			// 全局登录检查
			this.checkLoginStatus();
		},
		onShow: function() {
			console.log('App Show')
			// 每次应用显示时也检查登录状态
			this.checkLoginStatus();
			// 检查页面栈状态
			this.checkPageStack();
		},
		onHide: function() {
			console.log('App Hide')
		},
		methods: {
			// 检查登录状态和用户档案完整性
			checkLoginStatus: function() {
				console.log('=== 开始检查登录状态 ===');
				
				// 获取当前页面路径
				const pages = getCurrentPages();
				const currentPage = pages[pages.length - 1];
				const currentPath = currentPage.route;
				
				console.log('当前页面路径:', currentPath);
				
				// 获取登录状态
				const isLoggedIn = uni.getStorageSync('isLoggedIn');
				const token = uni.getStorageSync('token');
				const userInfo = uni.getStorageSync('userInfo');
				const userType = uni.getStorageSync('userType');
				
				console.log('登录状态:', { isLoggedIn, hasToken: !!token, hasUserInfo: !!userInfo, userType });
				
				// 登录页面路径
				const loginPagePath = '/pages/login/login';
				
				// 如果未登录，跳转到登录页面
				if (!isLoggedIn || !token) {
					console.log('用户未登录，跳转到登录页面');
					if (currentPath !== loginPagePath.replace('/', '')) {
						uni.redirectTo({
							url: loginPagePath
						});
					}
					return;
				}
				
				// 如果已登录，检查档案完整性
				console.log('用户已登录，检查档案完整性...');
				
				let profileComplete = false;
				let targetPage = '';
				
				// 根据用户类型检查档案完整性
				if (userType === 'doctor' || (userInfo && userInfo.role === 1)) {
					// 医生：检查是否有医院、科室、职位信息
					const doctorInfo = uni.getStorageSync('doctorInfo') || {};
					if (doctorInfo.hospital && doctorInfo.department && doctorInfo.position) {
						profileComplete = true;
						targetPage = '/pages/doctor/patientList';
					} else {
						console.log('医生档案不完整，需要完善信息');
						targetPage = loginPagePath + '?action=completeProfile&userType=doctor';
					}
				} else if (userType === 'patient' || (userInfo && userInfo.role === 2)) {
					// 患者：检查是否有姓名、年龄、身份证信息
					const patientInfo = uni.getStorageSync('patientInfo') || {};
					if (userInfo && userInfo.nickname && patientInfo.age && patientInfo.id_card) {
						profileComplete = true;
						targetPage = '/pages/index/index';
					} else {
						console.log('患者档案不完整，需要完善信息');
						targetPage = loginPagePath + '?action=completeProfile&userType=patient';
					}
				} else if (userType === 'admin' || (userInfo && userInfo.role === 3)) {
					// 管理员：直接进入管理页面
					profileComplete = true;
					targetPage = '/pages/index/index';
				}
				
				console.log('档案完整性检查结果:', { profileComplete, targetPage });
				
				// 如果档案完整且不在目标页面，跳转到目标页面
				// 注意：currentPath 不带前导斜杠，targetPage 带前导斜杠，需要统一比较
				if (profileComplete && currentPath !== targetPage.replace('/', '')) {
					console.log('档案完整，跳转到目标页面:', targetPage);
					
					// 检查目标页面是否为 TabBar 页面
					const tabBarPages = [
						'pages/index/index',
						'pages/chaKanBaoGao/chaKanBaoGao',
						'pages/userCenter/userCenter'
					];
					
					if (tabBarPages.includes(targetPage.replace(/^\//, ''))) {
						// TabBar 页面使用 switchTab
						console.log('✅ 使用 switchTab 跳转到 TabBar 页面:', targetPage);
						uni.switchTab({
							url: targetPage
						});
					} else {
						// 非 TabBar 页面使用 redirectTo
						console.log('✅ 使用 redirectTo 跳转到非 TabBar 页面:', targetPage);
						uni.redirectTo({
							url: targetPage
						});
					}
				} else if (!profileComplete && currentPath !== loginPagePath.replace('/', '')) {
					console.log('档案不完整，跳转到完善信息页面:', targetPage);
					uni.redirectTo({
						url: targetPage
					});
				}
				
				console.log('=== 登录状态检查完成 ===');
			},
			
			// 检查页面栈状态
			checkPageStack: function() {
				const pages = getCurrentPages();
				const stackCount = pages.length;
				
				console.log(`=== 页面栈检查 ===`);
				console.log(`当前页面栈数量: ${stackCount}`);
				
				if (stackCount > 10) {
					console.warn('页面栈过多，自动清理');
					// 清理页面栈，跳转到首页
					uni.reLaunch({
						url: '/pages/index/index'
					});
				} else if (stackCount > 8) {
					console.warn('页面栈较多，建议注意');
					// 记录警告状态
					this.recordPageStackWarning(stackCount, pages);
				} else {
					console.log('页面栈状态正常');
				}
				
				// 记录页面栈详情（调试用）
				if (stackCount > 0) {
					const pageRoutes = pages.map(page => page.route);
					console.log('页面栈详情:', pageRoutes);
				}
			},
			
			// 记录页面栈警告状态
			recordPageStackWarning: function(stackCount, pages) {
				const pageRoutes = pages.map(page => page.route);
				const warningInfo = {
					stackCount: stackCount,
					pageRoutes: pageRoutes,
					timestamp: new Date().toISOString(),
					userAgent: navigator.userAgent
				};
				
				console.warn('页面栈警告记录:', warningInfo);
				
				// 可以在这里添加更多的监控逻辑，比如上报到服务器
				// 或者存储到本地存储中用于调试
			}
		}
	}
</script>

<style>
	/*每个页面公共css */
	
	/* 全局字体设置 */
	page {
		font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
		font-size: 28rpx;
		line-height: 1.6;
		color: #333;
	}
	
	/* 标题字体 */
	.title, .nav-title, .page-title {
		font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
		font-weight: 600;
	}
	
	/* 正文字体 */
	.content, .text, .description {
		font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
		font-weight: 400;
	}
	
	/* 按钮字体 */
	button, .btn {
		font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
		font-weight: 500;
	}
	
	/* 输入框字体 */
	input, textarea {
		font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
		font-weight: 400;
	}
</style>
